home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / c++ / ios.z / ios
Encoding:
Text File  |  2002-10-03  |  25.2 KB  |  498 lines

  1. IOS(3C)                                               Last changed: 9-21-98
  2.  
  3.  
  4. NNAAMMEE
  5.      iiooss - Input/output formatting
  6.  
  7. SSYYNNOOPPSSIISS
  8.  #include <iostream.h>
  9.  
  10.  class ios {
  11.  public:
  12.       enum io_state { goodbit=0, eofbit, failbit, badbit };
  13.       enum open_mode { in, out, ate, app, trunc, nocreate, noreplace };
  14.       enum seek_dir { beg, cur, end };
  15.       /* flags for controlling format */
  16.       enum { skipws=01,
  17.              left=02,  right=04, internal=010,
  18.              dec=020, oct=040, hex=0100,
  19.              showbase=0200, showpoint=0400, uppercase=01000, showpos=02000,
  20.              scientific=04000, fixed=010000,
  21.              unitbuf=020000, stdio=040000 };
  22.       static const long basefield;
  23.                           /* dec|oct|hex */
  24.       static const long adjustfield;
  25.                           /* left|right|internal */
  26.       static const long floatfield;
  27.                           /* scientific|fixed */
  28.  public:
  29.            ios(streambuf*);
  30.  
  31.       int  bad();
  32.       static long    bitalloc();
  33.       void clear(int state =0);
  34.       int  eof();
  35.       int  fail();
  36.       char fill();
  37.       char fill(char);
  38.       long flags();
  39.       long flags(long);
  40.       int  good();
  41.       long&     iword(int);
  42.       int  operator!();
  43.            operator void*();
  44.       int  precision();
  45.       int  precision(int);
  46.       streambuf*     rdbuf();
  47.       void* &   pword(int);
  48.       int  rdstate();
  49.       long setf(long setbits, long field);
  50.       long setf(long);
  51.       static void    sync_with_stdio();
  52.       ostream*  tie();
  53.       ostream*  tie(ostream*);
  54.       long unsetf(long);
  55.       int  width();
  56.       int  width(int);
  57.       static int     xalloc();
  58.  protected:
  59.            ios();
  60.            init(streambuf*);
  61.  private:
  62.            ios(ios&);
  63.       void operator=(ios&)     ;
  64.  };
  65.  
  66.       /* Manipulators */
  67.  ios& dec(ios&) ;
  68.  ios& hex(ios&) ;
  69.  ios& oct(ios&) ;
  70.  ostream&  endl(ostream& i) ;
  71.  ostream&  ends(ostream& i) ;
  72.  ostream&  flush(ostream&) ;
  73.  istream&  ws(istream&) ;
  74.  
  75. IIMMPPLLEEMMEENNTTAATTIIOONN
  76.      IRIX systems
  77.  
  78. DDEESSCCRRIIPPTTIIOONN
  79.      The stream classes derived from class iiooss provide a high level
  80.      interface that supports transferring formatted and unformatted
  81.      information into and out of a ssttrreeaammbbuuff.  This manual page describes
  82.      the operations common to both input and output.
  83.  
  84.      Several enumerations are declared in class iiooss, ooppeenn__mmooddee, iioo__ssttaattee,
  85.      sseeeekk__ddiirr, and format flags, to avoid polluting the global name space.
  86.      iioo__ssttaattee is described on this manual page under ``Error States.''  The
  87.      format fields are also described on this page, under ``Formatting.''
  88.      ooppeenn__mmooddee is described in detail in ffssttrreeaamm(3C) under ooppeenn(()).
  89.      sseeeekk__ddiirr is described in ssbbuuff..ppuubb(3C) under sseeeekkooffff(()).
  90.  
  91.      The following assumptions are made in the descriptions on this man
  92.      page:
  93.  
  94.      * _s and _s_2 are iiooss classes.
  95.  
  96.      * _s_r is an iiooss&&.
  97.  
  98.      * _s_p is an iiooss**.
  99.  
  100.      * _i, _o_i, _j, and _n are iinntt addresses.
  101.  
  102.      * _l, _f, and _b are lloonngg addresses.
  103.  
  104.      * _c and _o_c are cchhaarr addresses.
  105.  
  106.      * _o_s_p and _o_o_s_p are oossttrreeaamm** addresses.
  107.  
  108.      * _s_b is a ssttrreeaammbbuuff**.
  109.  
  110.      * _p_o_s is a ssttrreeaammppooss.
  111.  
  112.      * _o_f_f is a ssttrreeaammooffff.
  113.  
  114.      * _d_i_r is a sseeeekk__ddiirr.
  115.  
  116.      * _m_o_d_e is an iinntt representing an ooppeenn__mmooddee.
  117.  
  118.      * _f_c_t is a function with type iiooss&& ((**))((iiooss&&)).
  119.  
  120.      * _v_p is a vvooiidd**&&.
  121.  
  122.    CCoonnssttrruuccttoorrss aanndd aassssiiggnnmmeenntt::
  123.           iiooss((_s_b))
  124.                The ssttrreeaammbbuuff denoted by _s_b becomes the ssttrreeaammbbuuff associated
  125.                with the constructed iiooss.  If _s_b is null, the effect is
  126.                undefined.
  127.  
  128.                ios(sr)
  129.                s2=s
  130.  
  131.                Copying of iioosss is not well-defined in general, therefore,
  132.                the constructor and assignment operators are private so that
  133.                the compiler will complain about attempts to copy iiooss
  134.                objects.  Copying pointers to iioossttrreeaamm classes is usually
  135.                what is desired.
  136.  
  137.                ios()
  138.                init(sb)
  139.  
  140.                Because class iiooss is now inherited as a virtual base class,
  141.                a constructor with no arguments must be used.  This
  142.                constructor is declared protected.  Therefore,
  143.                iiooss::::iinniitt((ssttrreeaammbbuuff**)) is declared protected and must be used
  144.                for initialization of derived classes.
  145.  
  146.    EErrrroorr SSttaatteess
  147.      Class iiooss has an internal _e_r_r_o_r _s_t_a_t_e (which is a collection of the
  148.      bits declared as iioo__ssttaattee classes).  Members related to the error
  149.      state are:
  150.  
  151.      _i==_s..rrddssttaattee(())
  152.           Returns the current error state.
  153.  
  154.      _s..cclleeaarr((_i))
  155.           Stores _i as the error state.  If _i is zero, this clears all bits.
  156.           To set a bit without clearing previously set bits requires
  157.           something like _s..cclleeaarr((iiooss::::bbaaddbbiitt||ss..rrddssttaattee(()))).
  158.  
  159.      _i==_s..ggoooodd(())
  160.           Returns non-zero if the error state has no bits set, zero
  161.           otherwise.
  162.  
  163.      _i==_s..eeooff(())
  164.           Returns non-zero if eeooffbbiitt is set in the error state, zero
  165.           otherwise.  Normally this bit is set when an end-of-file has been
  166.           encountered during an extraction.
  167.  
  168.      _i==_s..ffaaiill(())
  169.           Returns non-zero if either bbaaddbbiitt or ffaaiillbbiitt is set in the error
  170.           state, zero otherwise.  Normally this indicates that some
  171.           extraction or conversion has failed, but the stream is still
  172.           usable.  That is, once the ffaaiillbbiitt is cleared, I/O on _s can
  173.           usually continue.
  174.  
  175.      _i==_s..bbaadd(())
  176.           Returns non-zero if bbaaddbbiitt is set in the error state, zero
  177.           otherwise.  This usually indicates that some operation on
  178.           _s..rrddbbuuff(()) _h_a_s _f_a_i_l_e_d, _a _s_e_v_e_r_e _e_r_r_o_r, _f_r_o_m _w_h_i_c_h _r_e_c_o_v_e_r_y _i_s
  179.           _p_r_o_b_a_b_l_y _i_m_p_o_s_s_i_b_l_e.  _T_h_a_t _i_s, _i_t _w_i_l_l _p_r_o_b_a_b_l_y _b_e _i_m_p_o_s_s_i_b_l_e _t_o
  180.           _c_o_n_t_i_n_u_e _I/_O _o_p_e_r_a_t_i_o_n_s _o_n _s.
  181.  
  182.    OOppeerraattoorrss
  183.      Two operators are defined to allow convenient checking of the error
  184.      state of an iiooss:  ooppeerraattoorr!!(()) and ooppeerraattoorr vvooiidd**(()).  The latter
  185.      converts an iiooss to a pointer so that it can be compared to zero.  The
  186.      conversion will return 0 if ffaaiillbbiitt or bbaaddbbiitt is set in the error
  187.      state, and will return a pointer value otherwise.  This pointer is not
  188.      meant to be used.  This allows you to write expressions such as the
  189.      following:
  190.  
  191.           if ( cin ) ...
  192.  
  193.           if ( cin >> x ) ...
  194.  
  195.      The !! operator returns non-zero if ffaaiillbbiitt or bbaaddbbiitt is set in the
  196.      error state, which allows expressions like the following to be used:
  197.  
  198.           if ( !cout ) ...
  199.  
  200.    FFoorrmmaattttiinngg
  201.      An iiooss has a _f_o_r_m_a_t _s_t_a_t_e that is used by input and output operations
  202.      to control the details of formatting operations.  For other
  203.      operations, the format state has no particular effect, and its
  204.      components may be set and examined arbitrarily by user code.  Most
  205.      formatting details are controlled by using the ffllaaggss(()), sseettff(()), and
  206.      uunnsseettff(()) functions to set the following flags, which are declared in
  207.      an enumeration in class iiooss.  Three other components of the format
  208.      state are controlled separately with the ffiillll(()), wwiiddtthh(()), and
  209.      pprreecciissiioonn(()) functions.
  210.  
  211.      sskkiippwwss
  212.           If sskkiippwwss is set, whitespace will be skipped on input.  This
  213.           applies to scalar extractions.  When sskkiippwwss is not set,
  214.           whitespace is not skipped before the extractor begins conversion.
  215.           If sskkiippwwss is not set and a zero length field is encountered, the
  216.           extractor will signal an error.  Additionally, the arithmetic
  217.           extractors will signal an error if sskkiippwwss is not set and a
  218.           whitespace is encountered.
  219.  
  220.      lleefftt
  221.      rriigghhtt
  222.      iinntteerrnnaall
  223.           These flags control the padding of a value.  When lleefftt is set,
  224.           the value is left-adjusted (the fill character is added after the
  225.           value).  When rriigghhtt is set, the value is right-adjusted (the fill
  226.           character is added before the value).  When iinntteerrnnaall is set, the
  227.           fill character is added after any leading sign or base
  228.           indication, but before the value.  Right-adjustment is the
  229.           default if none of these flags is set.  These fields are
  230.           collectively identified by the static member, iiooss::::aaddjjuussttffiieelldd.
  231.           The fill character is controlled by the ffiillll(()) function, and the
  232.           width of padding is controlled by the wwiiddtthh(()) function.
  233.  
  234.      ddeecc
  235.      oocctt
  236.      hheexx  These flags control the conversion base of a value.  The
  237.           conversion base is 10 (decimal) if ddeecc is set, but if oocctt or hheexx
  238.           is set, conversions are done in octal or hexadecimal,
  239.           respectively.  If none of these is set, insertions are in
  240.           decimal, but extractions are interpreted according to the C++
  241.           lexical conventions for integral constants.  These fields are
  242.           collectively identified by the static member, iiooss::::bbaasseeffiieelldd.
  243.           The manipulators hheexx, ddeecc, and oocctt can also be used to set the
  244.           conversion base; see ``Built-in Manipulators'' on this man page.
  245.  
  246.      sshhoowwbbaassee
  247.           If sshhoowwbbaassee is set, insertions will be converted to an external
  248.           form that can be read according to the C++ lexical conventions
  249.           for integral constants.  sshhoowwbbaassee is unset by default.
  250.  
  251.      sshhoowwppooss
  252.           If sshhoowwppooss is set, then a ++ will be inserted into a decimal
  253.           conversion of a positive integral value.
  254.  
  255.      uuppppeerrccaassee
  256.           If uuppppeerrccaassee is set, then an uppercase XX will be used for
  257.           hexadecimal conversion when sshhoowwbbaassee is set, or an uppercase EE
  258.           will be used to print floating point numbers in scientific
  259.           notation.
  260.  
  261.      sshhoowwppooiinntt
  262.           If sshhoowwppooiinntt is set, trailing zeros and decimal points appear in
  263.           the result of a floating point conversion.
  264.  
  265.      sscciieennttiiffiicc
  266.      ffiixxeedd
  267.           These flags control the format to which a floating point value is
  268.           converted for insertion into a stream.  If sscciieennttiiffiicc is set, the
  269.           value is converted using scientific notation, where there is one
  270.           digit before the decimal point and the number of digits after it
  271.           is equal to the pprreecciissiioonn (see below), which is six by default.
  272.           An uppercase EE will introduce the exponent if uuppppeerrccaassee is set, a
  273.           lowercase ee will appear otherwise.  If ffiixxeedd is set, the value is
  274.           converted to decimal notation with pprreecciissiioonn digits after the
  275.           decimal point, or six by default.  If neither sscciieennttiiffiicc nor
  276.           ffiixxeedd is set, then the value will be converted using either
  277.           notation, depending on the value;  scientific notation will be
  278.           used if the exponent resulting from the conversion is less than
  279.           -4 or greater than or equal to precision digits.  Otherwise the
  280.           value will be converted to decimal notation with pprreecciissiioonn digits
  281.           total.  If sshhoowwppooiinntt is not set, trailing zeroes are removed from
  282.           the result and a decimal point appears only if it is followed by
  283.           a digit.  sscciieennttiiffiicc and ffiixxeedd are collectively identified by the
  284.           static member iiooss::::ffllooaattffiieelldd.
  285.  
  286.      uunniittbbuuff
  287.           When set, a flush is performed by oossttrreeaamm::::oossffxx(()) after each
  288.           insertion.  Unit buffering provides a compromise between buffered
  289.           output and unbuffered output.  Performance is better under unit
  290.           buffering than unbuffered output, which makes a system call for
  291.           each character output.  Unit buffering makes a system call for
  292.           each insertion operation, and doesn't require the user to call
  293.           oossttrreeaamm::::fflluusshh(()).
  294.  
  295.      ssttddiioo
  296.           When set, ssttddoouutt and ssttddeerrrr are flushed by oossttrreeaamm::::oossffxx(()) after
  297.           each insertion.
  298.  
  299.      The following functions use and set the format flags and variables.
  300.  
  301.      _o_c==_s..ffiillll((_c))
  302.           Sets the ``fill character'' format state variable to _c and
  303.           returns the previous value.  _c will be used as the padding
  304.           character, if one is necessary (see the wwiiddtthh() description).
  305.           The default fill or padding character is a space.  The
  306.           positioning of the fill character is determined by the rriigghhtt,
  307.           lleefftt, and iinntteerrnnaall flags.  A parameterized manipulator, sseettffiillll,
  308.           is also available for setting the fill character; see mmaanniipp(3C).
  309.  
  310.      _c==_s..ffiillll(())
  311.           Returns the ``fill character'' format state variable.
  312.  
  313.      _l==_s..ffllaaggss(())
  314.           Returns the current format flags.
  315.  
  316.      _l==_s..ffllaaggss((ff))
  317.           Resets all the format flags to those specified in _f and returns
  318.           the previous settings.
  319.  
  320.      _o_i==_s..pprreecciissiioonn((_i))
  321.           Sets the pprreecciissiioonn format state variable to _i and returns the
  322.           previous value.  This variable controls the number of significant
  323.           digits inserted by the floating point inserter.  The default is
  324.           6.  A parameterized manipulator, sseettpprreecciissiioonn, is also available
  325.           for setting the precision; see mmaanniipp(3C).
  326.  
  327.      _i==_s..pprreecciissiioonn(())
  328.           Returns the pprreecciissiioonn format state variable.
  329.  
  330.      _l==_s..sseettff((_b))
  331.           Turns on in _s the format flags marked in _b and returns the
  332.           previous settings.  A parameterized manipulator, sseettiioossffllaaggss,
  333.           performs the same function; see mmaanniipp(3C).
  334.  
  335.      _l==_s..sseettff((_b,,_f))
  336.           Resets in _s only the format flags specified by _f to the settings
  337.           marked in _b, and returns the previous settings.  That is, the
  338.           format flags specified by _f are cleared in _s, then reset to be
  339.           those marked in _b.  For example, to change the conversion base in
  340.           _s to be hheexx, one could write:  _s..sseettff((iiooss::::hheexx,,iiooss::::bbaasseeffiieelldd)).
  341.           iiooss::::bbaasseeffiieelldd specifies the conversion base bits as candidates
  342.           for change, and iiooss::::hheexx specifies the new value.  _s..sseettff((00,,_f))
  343.           _w_i_l_l _c_l_e_a_r _a_l_l _t_h_e _b_i_t_s _s_p_e_c_i_f_i_e_d _b_y _f, _a_s _w_i_l_l _a _p_a_r_a_m_e_t_e_r_i_z_e_d
  344.           _m_a_n_i_p_u_l_a_t_o_r, rreesseettiioossffllaaggss; _s_e_e mmaanniipp(_3_C).
  345.  
  346.      _l==_s..uunnsseettff((_b))
  347.           Unsets in _s the bits set in _b and returns the previous settings.
  348.  
  349.      _o_i==_s..wwiiddtthh((_i))
  350.           Sets the _f_i_e_l_d _w_i_d_t_h format variable to _i and returns the
  351.           previous value.  When the field width is zero (the default),
  352.           inserters will insert only as many characters as necessary to
  353.           represent the value being inserted.  When the field width is
  354.           non-zero, the inserters will insert at least that many
  355.           characters, using the fill character to pad the value, if the
  356.           value being inserted requires fewer than _f_i_e_l_d-_w_i_d_t_h characters
  357.           to be represented.  However, the numeric inserters never truncate
  358.           values, so if the value being inserted will not fit in _f_i_e_l_d-
  359.           _w_i_d_t_h characters, more than _f_i_e_l_d-_w_i_d_t_h characters will be
  360.           output.  The field width is always interpreted as a mininum
  361.           number of characters; there is no direct way to specify a maximum
  362.           number of characters.  The _f_i_e_l_d-_w_i_d_t_h format variable is reset
  363.           to the default (zero) after each insertion or extraction, and in
  364.           this sense it behaves as a parameter for insertions and
  365.           extractions.  A parameterized manipulator, sseettww, is also
  366.           available for setting the width; see mmaanniipp(3C).
  367.  
  368.      _i==_s..wwiiddtthh(())
  369.           Returns the _f_i_e_l_d-_w_i_d_t_h format variable.
  370.  
  371.    UUsseerr--ddeeffiinneedd FFoorrmmaatt FFllaaggss
  372.      Class iiooss can be used as a base class for derived classes that require
  373.      additional format flags or variables.  The iostream library provides
  374.      several functions to do this.  The two static member functions
  375.      iiooss::::xxaalllloocc and iiooss::::bbiittaalllloocc, allow several such classes to be used
  376.      together without interference.
  377.  
  378.           _b==iiooss::::bbiittaalllloocc(())
  379.                Returns a lloonngg with a single, previously unallocated, bit
  380.                set.  This allows users who need an additional flag to
  381.                acquire one, and pass it as an argument to iiooss::::sseettff(()), for
  382.                example.
  383.  
  384.           _i==iiooss::::xxaalllloocc(())
  385.                Returns a previously unused index into an array of words
  386.                available for use as format state variables by derived
  387.                classes.
  388.  
  389.           _l==_s..iiwwoorrdd((_i))
  390.                When _i is an index allocated by iiooss::::xxaalllloocc, iiwwoorrdd(()) returns
  391.                a reference to the _ith user-defined word.
  392.  
  393.           _v_p==_s..ppwwoorrdd((_i))
  394.                When _i is an index allocated by iiooss::::xxaalllloocc, ppwwoorrdd(()) returns
  395.                a reference to the _ith user-defined word.  ppwwoorrdd(()) is the
  396.                same as iiwwoorrdd except that it is typed differently.
  397.  
  398.    OOtthheerr mmeemmbbeerrss::
  399.           _s_b==_s..rrddbbuuff(())
  400.                Returns a pointer to the ssttrreeaammbbuuff associated with _s when _s
  401.                was constructed.
  402.  
  403.           iiooss::::ssyynncc__wwiitthh__ssttddiioo(())
  404.                Solves problems that arise when mixing stdio and iostreams.
  405.                The first time it is called it will reset the standard
  406.                iostreams (cciinn, ccoouutt, cceerrrr, cclloogg) to be streams using
  407.                ssttddiioobbuuffs.  After that, input and output using these streams
  408.                may be mixed with input and output using the corresponding
  409.                FFIILLEEs (ssttddiinn, ssttddoouutt, and ssttddeerrrr) and will be properly
  410.                synchronized.  ssyynncc__wwiitthh__ssttddiioo(()) makes ccoouutt and cceerrrr unit
  411.                buffered (see iiooss::::uunniittbbuuff and iiooss::::ssttddiioo above).  Invoking
  412.                ssyynncc__wwiitthh__ssttddiioo(()) degrades performance a variable amount,
  413.                depending on the length of the strings being inserted
  414.                (shorter strings incur a larger performance hit).
  415.  
  416.           _o_o_s_p==_s..ttiiee((_o_s_p))
  417.                Sets the ttiiee variable to _o_s_p, and returns its previous
  418.                value.  This variable supports automatic ``flushing'' of
  419.                iioosss.  If the ttiiee variable is non-null and an iiooss needs more
  420.                characters or has characters to be consumed, the iiooss pointed
  421.                at by the tie variable is flushed.  By default, cciinn is tied
  422.                initially to ccoouutt so that attempts to get more characters
  423.                from standard input result in flushing standard output.
  424.                Additionally, cceerrrr and cclloogg are tied to ccoouutt by default.
  425.                For other iioosss, the tie variable is set to zero by default.
  426.  
  427.           _o_s_p==_s..ttiiee(())
  428.                Returns the ttiiee variable.
  429.  
  430.    BBuuiilltt--iinn MMaanniippuullaattoorrss::
  431.      Some convenient manipulators (functions that take an iiooss&&, an
  432.      iissttrreeaamm&&, or an oossttrreeaamm&& and return their argument; see mmaanniipp(3C))
  433.      are:
  434.  
  435.      _s_r<<<<ddeecc
  436.      _s_r>>>>ddeecc
  437.           These set the conversion base format flag to 10.
  438.  
  439.      _s_r<<<<hheexx
  440.      _s_r>>>>hheexx
  441.           These set the conversion base format flag to 16.
  442.  
  443.      _s_r<<<<oocctt
  444.      _s_r>>>>oocctt
  445.           These set the conversion base format flag to 8.
  446.  
  447.      _s_r>>>>wwss
  448.           Extracts whitespace characters.  See iissttrreeaamm(3C).
  449.  
  450.      _s_r<<<<eennddll
  451.           Ends a line by inserting a newline character and flushing.  See
  452.           oossttrreeaamm(3C).
  453.  
  454.      _s_r<<<<eennddss
  455.           Ends a string by inserting a null (0) character.  See
  456.           oossttrreeaamm(3C).
  457.  
  458.      _s_r<<<<fflluusshh
  459.           Flushes oouuttss.  See oossttrreeaamm(3C).
  460.  
  461.      Several parameterized manipulators that operate on iiooss objects are
  462.      described in mmaanniipp(3C):  sseettww, sseettffiillll, sseettpprreecciissiioonn, sseettiioossffllaaggss, and
  463.      rreesseettiioossffllaaggss.
  464.  
  465.      The ssttrreeaammbbuuff associated with an iiooss may be manipulated by other
  466.      methods than through the iiooss.  For example, characters may be stored
  467.      in a queuelike ssttrreeaammbbuuff through an oossttrreeaamm while they are being
  468.      fetched through an iissttrreeaamm.  Or for efficiency some part of a program
  469.      may choose to do ssttrreeaammbbuuff operations directly rather than through the
  470.      iiooss.  In most cases the program does not have to worry about this
  471.      possibility, because an iiooss never saves information about the internal
  472.      state of a ssttrreeaammbbuuff.  For example, if the ssttrreeaammbbuuff is repositioned
  473.      between extraction operations the extraction (input) will proceed
  474.      normally.
  475.  
  476. NNOOTTEESS
  477.      The old stream package called ssyynncc__wwiitthh__ssttddiioo as a default, but in the
  478.      iostream package, unbuffered ssttddiioobbuuffs are too inefficient to be the
  479.      default.
  480.  
  481.      The stream package had a constructor that took a FFIILLEE** argument.  This
  482.      is now replaced by ssttddiioossttrreeaamm.  It is not declared even as an
  483.      obsolete form to avoid having iioossttrreeaamm..hh depend on ssttddiioo..hh.
  484.  
  485.      The old stream package allowed copying of streams.  This is disallowed
  486.      by the iostream package.  However, objects of type iissttrreeaamm__wwiitthhaassssiiggnn,
  487.      oossttrreeaamm__wwiitthhaassssiiggnn, and iioossttrreeaamm__wwiitthhaassssiiggnn can be assigned to.  Old
  488.      code using copying can usually be rewritten to use pointers or these
  489.      classes.  (The standard streams cciinn, ccoouutt, cceerrrr, and cclloogg are members
  490.      of wwiitthhaassssiiggnn classes, so they can be assigned to, as in
  491.      cciinn == iinnppuuttffssttrreeaamm.)
  492.  
  493. SSEEEE AALLSSOO
  494.      iioossttrreeaamm(3C), ssttrreeaammbbuuff(3C), iissttrreeaamm(3C), oossttrreeaamm(3C), mmaanniipp(3C)
  495.  
  496.      This man page is available only online.
  497.  
  498.